Sounds like you're where I was not that long ago...
Something to think about...
I have an object called "Item". Which is similar to what you have... these products... now my name "Item" sucks.. don't EVER name a class that... sadly I'm married to it for now. :)
anyway... In addition to "Item" I have another object called "ItemGroup"... this is able to hold a collection of items if need be. So rather then using a pure ArrayList I made this class for additional features... Inside the class might be something like :
Map<String, Set<Item>> // I forget... I'm not actually looking at the code...
so when I add an item to this object... It get's "filtered" into a Set that goes into a Map... the String for you might be "Telephone"... So then I can easily do something like
return myItemGroup.getArrayList("Telephone")
And now I can easily send all the Telephones to a repeat or whatever.. Now possibly you don't need to store everything in the object like I do... you could build Static methods to do this... convert them to your custom java object and return them on the fly... to me storing them is a little better and gives me some basic caching... but can be problematic somethings also...
Also the key "String" should really be an enum most likely... but that's another story.
Yeah the REST stuff does have a learning curve... I've only don't a little bit myself yet... it's high on my list... huge skill to master really. very important... but like it sounds like you're doing.. i stick more with the java objects to keep the process moving.
If you need anything don't be afraid to email me or even come and join the XPages Slack chat - xpages-slack.herokuapp.com - where other xpagers hang out.
Dave
NotesIn9